package com.szxw.BaiduAi.service;

import com.baidu.aip.nlp.AipNlp;
import com.baidu.aip.nlp.ESimnetType;
import com.szxw.BaiduAi.factory.ApiFactory;
import org.json.JSONObject;

import java.util.HashMap;

/**
 * @Author: 苏执小威
 * @Email:1410511702@qq.com
 * @Desc: 自然语言的服务层用于处理业务
 * @Date: 2022/9/19 9:34
 */
public class NlpService {
    public NlpService() {
    }

    private static AipNlp client = ApiFactory.getNlpInstance();

    private static HashMap<String, Object> options = new HashMap<String, Object>();

    /**
     * 获取情感分析结果
     *
     * @param text 输入的值
     * @return
     */
    public static JSONObject emotion(String text) {
        return client.sentimentClassify(text, options);
    }

    /**
     * 获取地址识别结果
     *
     * @param addr 要识别的地址
     * @return
     */
    public static JSONObject addr(String addr) {
        return client.address(addr, options);
    }

    /**
     * 文本纠错
     *
     * @param text
     * @return
     */
    public static JSONObject correction(String text) {
        return client.ecnet(text, options);
    }

    /**
     * 新闻摘要
     *
     * @param text
     * @param len
     * @return
     */
    public static JSONObject newsSummary(String text, int len) {
        return client.newsSummary(text, len, options);
    }

    /**
     * 文本相似度
     *
     * @param text1
     * @param text2
     * @return
     */
    public static JSONObject textSim(String text1, String text2) {
        options.put("model", "CNN");
        return client.simnet(text1, text2, options);
    }

    /**
     * 词义相似度
     *
     * @param word1
     * @param word2
     * @return
     */
    public static JSONObject wordSiment(String word1, String word2) {

        return client.simnet(word1, word2, options);
    }

    /**
     * 词法分析
     *
     * @param text
     * @return
     */
    public static JSONObject lexer(String text) {
        return client.lexer(text, options);
    }

    /**
     * 依存句法分析
     *
     * @param text
     * @return
     */
    public static JSONObject depParser(String text) {
        options.put("model", 1);
        return client.depParser(text, options);
    }

    /**
     * 文章标签
     *
     * @param title
     * @param text
     * @return
     */
    public static JSONObject keyWord(String title, String text) {
        return client.keyword(title, text, options);
    }

    /**
     * 文章分类
     *
     * @param title
     * @param text
     * @return
     */
    public static JSONObject topic(String title, String text) {
        return client.topic(title, text, options);
    }

    /**
     * 情感对话分析
     *
     * @param text
     * @return
     */
    public static JSONObject emotolk(String text) {
        options.put("scene", "talk");
        return client.emotion(text, options);
    }

    /**
     * 评论观点抽取
     *
     * @param text
     * @return
     */
    public static JSONObject comTag(String text, ESimnetType type) {
        return client.commentTag(text, type, options);
    }

    /**
     * 词向量表示
     *
     * @param text
     * @return
     */
    public static JSONObject wordEmbed(String text) {
        return client.wordEmbedding(text, options);
    }

    /**
     * DNN语言模型
     *
     * @param text
     * @return
     */
    public static JSONObject dnnlmcn(String text) {
        return client.dnnlmCn(text, options);
    }
}
